'''
JSON（JavaScript Object Notation）是一种轻量级的数据交换格式，
它基于ECMAScript的一个子集，采用完全独立于编程语言的文本格式来存储和表示数据。
JSON是一种非常流行的数据交换格式，它在Web开发中被广泛使用。
JSON的语法规则非常简单，它由键值对组成，键值对之间用逗号分隔，键和值之间用冒号分隔。
JSON的键必须是字符串，值可以是字符串、数字、布尔值、数组、对象或null。
JSON的字符串必须使用双引号括起来，不能使用单引号。
JSON的数组必须使用方括号括起来，不能使用圆括号。
JSON的对象必须使用花括号括起来，不能使用方括号。
JSON的字符串、数字、布尔值、数组、对象和null都可以直接在JSON中使用，不需要使用引号括起来。
JSON的字符串、数字、布尔值、数组、对象和null都可以直接在Python中使用，不需要使用引号括起来。
'''
import json

my_dict = {
    'name': '骆昊',
    'age': 40,
    'friends': ['王大锤', '白元芳'],
    'cars': [
        {'brand': 'BMW', 'max_speed': 240},
        {'brand': 'Audi', 'max_speed': 280},
        {'brand': 'Benz', 'max_speed': 280}
    ]
}
print(json.dumps(my_dict))

'''
dump - 将Python对象按照JSON格式序列化到文件中
dumps - 将Python对象处理成JSON格式的字符串
load - 将文件中的JSON数据反序列化成对象
loads - 将字符串的内容反序列化成Python对象
'''
with open('data.json', 'w') as file:
    json.dump(my_dict, file)


with open('data.json', 'r') as file:
    my_dict = json.load(file)
    print(type(my_dict))
    print(my_dict)    

 #Python标准库中的json模块在数据序列化和反序列化时性能并不是非常理想，为了解决这个问题，可以使用三方库ujson来替换json   


import requests

resp = requests.get('https://apis.tianapi.com/guonei/index?key=b4f2ec79680b9f4ad13fa9506d223b75&num=100')
if resp.status_code == 200:
    data_model = resp.json()
    for news in data_model['result']['newslist']:
        print(news['title'])
        print(news['url'])
        print('-' * 60)

        